--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
scripts/mutation/run.mjs 65ca9ddc823fcc2c8f8653c553b944b85db0875f (65ca9ddc) Text, 7.79 KB
T8b949e#!/usr/bin/env node
Tff7b72import Tb4b4b4{ Te6edf3spawnSync Tb4b4b4} Tff7b72from Ta5d6ff"node:child_process"Tb4b4b4;
Tff7b72import Te6edf3fs Tff7b72from Ta5d6ff"node:fs"Tb4b4b4;
Tff7b72import Te6edf3path Tff7b72from Ta5d6ff"node:path"Tb4b4b4;
Tff7b72import Te6edf3process Tff7b72from Ta5d6ff"node:process"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3fileURLToPath Tb4b4b4} Tff7b72from Ta5d6ff"node:url"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3DEFAULT_FRONTEND_TARGETS Tb4b4b4} Tff7b72from Ta5d6ff"./config.mjs"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3generateMutants Tb4b4b4} Tff7b72from Ta5d6ff"./mutators.mjs"Tb4b4b4;
Tff7b72const Te6edf3__dirname Tff7b72= Te6edf3pathTb4b4b4.Te6edf3dirnameTb4b4b4(Te6edf3fileURLToPathTb4b4b4(Tff7b72importTb4b4b4.Te6edf3metaTb4b4b4.Te6edf3urlTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3ROOT Tff7b72= Te6edf3pathTb4b4b4.Te6edf3resolveTb4b4b4(Te6edf3__dirnameTb4b4b4, Ta5d6ff"../.."Tb4b4b4)Tb4b4b4;
T8b949e/**
* @typedef {"killed" | "survived" | "error" | "skipped"} MutantStatus
*/
T8b949e/**
* @typedef {{ id: string, source: string, operator: string, line: number, column: number, status: MutantStatus, detail?: string }} MutantResult
*/
Tff7b72function Te6edf3parseArgsTb4b4b4(Te6edf3argvTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3options Tff7b72= Tb4b4b4{
Te6edf3targetsTff7b72: Tb4b4b4[Tb4b4b4...Te6edf3DEFAULT_FRONTEND_TARGETSTb4b4b4]Tb4b4b4,
Te6edf3minScoreTff7b72: Tff7b72nullTb4b4b4,
Te6edf3maxMutantsPerFileTff7b72: Tff7b72nullTb4b4b4,
Te6edf3reportPathTff7b72: Ta5d6ff"reports/mutation/meshmut-report.json"Tb4b4b4,
Te6edf3dryRunTff7b72: Tff7b72falseTb4b4b4,
Te6edf3explicitSourcesTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3argvTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3i Tff7b72+= T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3arg Tff7b72= Te6edf3argvTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3arg Tff7b72=== Ta5d6ff"--min-score"Tb4b4b4) Tb4b4b4{
Te6edf3optionsTb4b4b4.Te6edf3minScore Tff7b72= Tffa657NumberTb4b4b4(Te6edf3argvTb4b4b4[Tff7b72++Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3arg Tff7b72=== Ta5d6ff"--max-per-file"Tb4b4b4) Tb4b4b4{
Te6edf3optionsTb4b4b4.Te6edf3maxMutantsPerFile Tff7b72= Tffa657NumberTb4b4b4(Te6edf3argvTb4b4b4[Tff7b72++Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3arg Tff7b72=== Ta5d6ff"--report"Tb4b4b4) Tb4b4b4{
Te6edf3optionsTb4b4b4.Te6edf3reportPath Tff7b72= Te6edf3argvTb4b4b4[Tff7b72++Te6edf3iTb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3arg Tff7b72=== Ta5d6ff"--source"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3source Tff7b72= Te6edf3argvTb4b4b4[Tff7b72++Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3existing Tff7b72= Te6edf3DEFAULT_FRONTEND_TARGETSTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3targetTb4b4b4) Tb4b4b4=> Te6edf3targetTb4b4b4.Te6edf3source Tff7b72=== Te6edf3sourceTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3existingTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffUnknown mutation source: Tffd700${Te6edf3sourceTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3optionsTb4b4b4.Te6edf3explicitSourcesTb4b4b4) Tb4b4b4{
Te6edf3optionsTb4b4b4.Te6edf3targets Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3optionsTb4b4b4.Te6edf3explicitSources Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Te6edf3optionsTb4b4b4.Te6edf3targetsTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3existingTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3arg Tff7b72=== Ta5d6ff"--dry-run"Tb4b4b4) Tb4b4b4{
Te6edf3optionsTb4b4b4.Te6edf3dryRun Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3arg Tff7b72=== Ta5d6ff"--help" Tff7b72|| Te6edf3arg Tff7b72=== Ta5d6ff"-h"Tb4b4b4) Tb4b4b4{
Te6edf3printHelpTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffUnknown argument: Tffd700${Te6edf3argTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3optionsTb4b4b4;
Tb4b4b4}
Tff7b72function Te6edf3printHelpTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff`Ta5d6ffMeshMut - in-repo JavaScript mutation testing
Usage:
node scripts/mutation/run.mjs [options]
Options:
--source <path> Mutate a single configured source file
--min-score <pct> Fail when mutation score is below threshold
--max-per-file <n> Cap mutants generated per source file
--report <path> JSON report output path (default: reports/mutation/meshmut-report.json)
--dry-run List mutants without executing tests
--help Show this help
Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e/**
* @param {string[]} testFiles
*/
Tff7b72function Te6edf3runVitestTb4b4b4(Te6edf3testFilesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3args Tff7b72= Tb4b4b4[Ta5d6ff"exec"Tb4b4b4, Ta5d6ff"vitest"Tb4b4b4, Ta5d6ff"run"Tb4b4b4, Tb4b4b4...Te6edf3testFilesTb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3result Tff7b72= Te6edf3spawnSyncTb4b4b4(Ta5d6ff"pnpm"Tb4b4b4, Te6edf3argsTb4b4b4, Tb4b4b4{
Te6edf3cwdTff7b72: Te6edf3ROOTTb4b4b4,
Te6edf3encodingTff7b72: Ta5d6ff"utf-8"Tb4b4b4,
Te6edf3envTff7b72: Te6edf3processTb4b4b4.Te6edf3envTb4b4b4,
Te6edf3stdioTff7b72: Tb4b4b4[Ta5d6ff"ignore"Tb4b4b4, Ta5d6ff"pipe"Tb4b4b4, Ta5d6ff"pipe"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3exitCodeTff7b72: Te6edf3resultTb4b4b4.Te6edf3status Tff7b72?? T79c0ff1Tb4b4b4,
Te6edf3stdoutTff7b72: Te6edf3resultTb4b4b4.Te6edf3stdout Tff7b72?? Ta5d6ff""Tb4b4b4,
Te6edf3stderrTff7b72: Te6edf3resultTb4b4b4.Te6edf3stderr Tff7b72?? Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
T8b949e/**
* @param {import("./config.mjs").MutationTarget} target
* @param {ReturnType<typeof parseArgs>} options
* @returns {MutantResult[]}
*/
Tff7b72function Te6edf3mutateTargetTb4b4b4(Te6edf3targetTb4b4b4, Te6edf3optionsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3sourcePath Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3ROOTTb4b4b4, Te6edf3targetTb4b4b4.Te6edf3sourceTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3original Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readFileSyncTb4b4b4(Te6edf3sourcePathTb4b4b4, Ta5d6ff"utf-8"Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3mutants Tff7b72= Te6edf3generateMutantsTb4b4b4(Te6edf3originalTb4b4b4, Te6edf3targetTb4b4b4.Te6edf3sourceTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3optionsTb4b4b4.Te6edf3maxMutantsPerFile Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3mutants Tff7b72= Te6edf3mutantsTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3optionsTb4b4b4.Te6edf3maxMutantsPerFileTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3optionsTb4b4b4.Te6edf3dryRunTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3mutantsTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3mutantTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Te6edf3mutantTb4b4b4.Te6edf3idTb4b4b4,
Te6edf3sourceTff7b72: Te6edf3targetTb4b4b4.Te6edf3sourceTb4b4b4,
Te6edf3operatorTff7b72: Te6edf3mutantTb4b4b4.Te6edf3operatorTb4b4b4,
Te6edf3lineTff7b72: Te6edf3mutantTb4b4b4.Te6edf3lineTb4b4b4,
Te6edf3columnTff7b72: Te6edf3mutantTb4b4b4.Te6edf3columnTb4b4b4,
Te6edf3statusTff7b72: Ta5d6ff"skipped"Tb4b4b4,
Te6edf3detailTff7b72: Ta5d6ff`Ta5d6ffdry-run: Tffd700${Te6edf3mutantTb4b4b4.Te6edf3originalTffd700}Ta5d6ff -> Tffd700${Te6edf3mutantTb4b4b4.Te6edf3mutatedTffd700}Ta5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e/** @type {MutantResult[]} */
Tff7b72const Te6edf3results Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3mutant Tff7b72of Te6edf3mutantsTb4b4b4) Tb4b4b4{
Te6edf3fsTb4b4b4.Te6edf3writeFileSyncTb4b4b4(Te6edf3sourcePathTb4b4b4, Te6edf3mutantTb4b4b4.Te6edf3contentTb4b4b4, Ta5d6ff"utf-8"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3run Tff7b72= Te6edf3runVitestTb4b4b4(Te6edf3targetTb4b4b4.Te6edf3testsTb4b4b4)Tb4b4b4;
Te6edf3fsTb4b4b4.Te6edf3writeFileSyncTb4b4b4(Te6edf3sourcePathTb4b4b4, Te6edf3originalTb4b4b4, Ta5d6ff"utf-8"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3runTb4b4b4.Te6edf3exitCode Tff7b72!== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3resultsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Te6edf3mutantTb4b4b4.Te6edf3idTb4b4b4,
Te6edf3sourceTff7b72: Te6edf3targetTb4b4b4.Te6edf3sourceTb4b4b4,
Te6edf3operatorTff7b72: Te6edf3mutantTb4b4b4.Te6edf3operatorTb4b4b4,
Te6edf3lineTff7b72: Te6edf3mutantTb4b4b4.Te6edf3lineTb4b4b4,
Te6edf3columnTff7b72: Te6edf3mutantTb4b4b4.Te6edf3columnTb4b4b4,
Te6edf3statusTff7b72: Ta5d6ff"killed"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Te6edf3resultsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Te6edf3mutantTb4b4b4.Te6edf3idTb4b4b4,
Te6edf3sourceTff7b72: Te6edf3targetTb4b4b4.Te6edf3sourceTb4b4b4,
Te6edf3operatorTff7b72: Te6edf3mutantTb4b4b4.Te6edf3operatorTb4b4b4,
Te6edf3lineTff7b72: Te6edf3mutantTb4b4b4.Te6edf3lineTb4b4b4,
Te6edf3columnTff7b72: Te6edf3mutantTb4b4b4.Te6edf3columnTb4b4b4,
Te6edf3statusTff7b72: Ta5d6ff"survived"Tb4b4b4,
Te6edf3detailTff7b72: Ta5d6ff`Tffd700${Te6edf3mutantTb4b4b4.Te6edf3originalTffd700}Ta5d6ff -> Tffd700${Te6edf3mutantTb4b4b4.Te6edf3mutatedTffd700}Ta5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3resultsTb4b4b4;
Tb4b4b4}
T8b949e/**
* @param {MutantResult[]} results
*/
Tff7b72function Te6edf3summarizeTb4b4b4(Te6edf3resultsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3killed Tff7b72= Te6edf3resultsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3resultTb4b4b4) Tb4b4b4=> Te6edf3resultTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"killed"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72const Te6edf3survived Tff7b72= Te6edf3resultsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3resultTb4b4b4) Tb4b4b4=> Te6edf3resultTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"survived"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72const Te6edf3errors Tff7b72= Te6edf3resultsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3resultTb4b4b4) Tb4b4b4=> Te6edf3resultTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"error"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72const Te6edf3skipped Tff7b72= Te6edf3resultsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3resultTb4b4b4) Tb4b4b4=> Te6edf3resultTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"skipped"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72const Te6edf3scored Tff7b72= Te6edf3killed Tff7b72+ Te6edf3survivedTb4b4b4;
Tff7b72const Te6edf3score Tff7b72= Te6edf3scored Tff7b72> T79c0ff0 Tff7b72? Tb4b4b4(Te6edf3killed Tff7b72/ Te6edf3scoredTb4b4b4) Tff7b72* T79c0ff100 Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72return Tb4b4b4{ Te6edf3killedTb4b4b4, Te6edf3survivedTb4b4b4, Te6edf3errorsTb4b4b4, Te6edf3skippedTb4b4b4, Te6edf3scoredTb4b4b4, Te6edf3score Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72function Te6edf3writeReportTb4b4b4(Te6edf3reportPathTb4b4b4, Te6edf3resultsTb4b4b4, Te6edf3summaryTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3absolute Tff7b72= Te6edf3pathTb4b4b4.Te6edf3isAbsoluteTb4b4b4(Te6edf3reportPathTb4b4b4) Tff7b72? Te6edf3reportPath Tff7b72: Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3ROOTTb4b4b4, Te6edf3reportPathTb4b4b4)Tb4b4b4;
Te6edf3fsTb4b4b4.Te6edf3mkdirSyncTb4b4b4(Te6edf3pathTb4b4b4.Te6edf3dirnameTb4b4b4(Te6edf3absoluteTb4b4b4)Tb4b4b4, Tb4b4b4{ Te6edf3recursiveTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3fsTb4b4b4.Te6edf3writeFileSyncTb4b4b4(
Te6edf3absoluteTb4b4b4,
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(
Tb4b4b4{
Te6edf3toolTff7b72: Ta5d6ff"meshmut"Tb4b4b4,
Te6edf3generatedAtTff7b72: Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toISOStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3summaryTb4b4b4,
Te6edf3resultsTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tff7b72nullTb4b4b4,
T79c0ff2
Tb4b4b4)Tb4b4b4,
Ta5d6ff"utf-8"
Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3absoluteTb4b4b4;
Tb4b4b4}
Tff7b72function Te6edf3mainTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3options Tff7b72= Te6edf3parseArgsTb4b4b4(Te6edf3processTb4b4b4.Te6edf3argvTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4;
T8b949e/** @type {MutantResult[]} */
Tff7b72const Te6edf3allResults Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3target Tff7b72of Te6edf3optionsTb4b4b4.Te6edf3targetsTb4b4b4) Tb4b4b4{
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff`Ta5d6ff\nTa5d6ffMutating Tffd700${Te6edf3targetTb4b4b4.Te6edf3sourceTffd700}Ta5d6ff (Tffd700${Te6edf3targetTb4b4b4.Te6edf3testsTb4b4b4.Te6edf3lengthTffd700}Ta5d6ff test file(s))Ta5d6ff\nTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3results Tff7b72= Te6edf3mutateTargetTb4b4b4(Te6edf3targetTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4;
Te6edf3allResultsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4...Te6edf3resultsTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fileSummary Tff7b72= Te6edf3summarizeTb4b4b4(Te6edf3resultsTb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(
Ta5d6ff`Ta5d6ff killed=Tffd700${Te6edf3fileSummaryTb4b4b4.Te6edf3killedTffd700}Ta5d6ff survived=Tffd700${Te6edf3fileSummaryTb4b4b4.Te6edf3survivedTffd700}Ta5d6ff score=Tffd700${Te6edf3fileSummaryTb4b4b4.Te6edf3scoreTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4)Tffd700}Ta5d6ff%Ta5d6ff\nTa5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3summary Tff7b72= Te6edf3summarizeTb4b4b4(Te6edf3allResultsTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3reportFile Tff7b72= Te6edf3writeReportTb4b4b4(Te6edf3optionsTb4b4b4.Te6edf3reportPathTb4b4b4, Te6edf3allResultsTb4b4b4, Te6edf3summaryTb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff"\nMutation summary\n"Tb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff`Ta5d6ff killed: Tffd700${Te6edf3summaryTb4b4b4.Te6edf3killedTffd700}Ta5d6ff\nTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff`Ta5d6ff survived: Tffd700${Te6edf3summaryTb4b4b4.Te6edf3survivedTffd700}Ta5d6ff\nTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff`Ta5d6ff score: Tffd700${Te6edf3summaryTb4b4b4.Te6edf3scoreTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4)Tffd700}Ta5d6ff%Ta5d6ff\nTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff`Ta5d6ff report: Tffd700${Te6edf3reportFileTffd700}Ta5d6ff\nTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3summaryTb4b4b4.Te6edf3survived Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff"\nSurviving mutants:\n"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3result Tff7b72of Te6edf3allResultsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3entryTb4b4b4) Tb4b4b4=> Te6edf3entryTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"survived"Tb4b4b4)Tb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff20Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(
Ta5d6ff`Ta5d6ff Tffd700${Te6edf3resultTb4b4b4.Te6edf3sourceTffd700}Ta5d6ff:Tffd700${Te6edf3resultTb4b4b4.Te6edf3lineTffd700}Ta5d6ff:Tffd700${Te6edf3resultTb4b4b4.Te6edf3columnTffd700}Ta5d6ff [Tffd700${Te6edf3resultTb4b4b4.Te6edf3operatorTffd700}Ta5d6ff] Tffd700${Te6edf3resultTb4b4b4.Te6edf3detail Tff7b72?? Ta5d6ff""Tffd700}Ta5d6ff\nTa5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3summaryTb4b4b4.Te6edf3survived Tff7b72> T79c0ff20Tb4b4b4) Tb4b4b4{
Te6edf3processTb4b4b4.Te6edf3stdoutTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff`Ta5d6ff ... and Tffd700${Te6edf3summaryTb4b4b4.Te6edf3survived Tff7b72- T79c0ff20Tffd700}Ta5d6ff more (see report)Ta5d6ff\nTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3optionsTb4b4b4.Te6edf3minScore Tff7b72!= Tff7b72null Tff7b72&& Te6edf3summaryTb4b4b4.Te6edf3score Tff7b72< Te6edf3optionsTb4b4b4.Te6edf3minScoreTb4b4b4) Tb4b4b4{
Te6edf3processTb4b4b4.Te6edf3stderrTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff`Ta5d6ff\nTa5d6ffMutation score Tffd700${Te6edf3summaryTb4b4b4.Te6edf3scoreTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4)Tffd700}Ta5d6ff% is below minimum Tffd700${Te6edf3optionsTb4b4b4.Te6edf3minScoreTffd700}Ta5d6ff%.Ta5d6ff\nTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3summaryTb4b4b4.Te6edf3scored Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3processTb4b4b4.Te6edf3stderrTb4b4b4.Te6edf3writeTb4b4b4(Ta5d6ff"\nNo mutants were scored.\n"Tb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Te6edf3mainTb4b4b4(Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────